Variable codebook for MIMO system

ABSTRACT

A MIMO wireless communication system employing a variable size preceding codebook is provided. The size of the codebook may be determined by the quality of the wireless transmission channel between a transmitter and a receiver associated with the MIMO wireless communication systems or some other codebook selection criteria. A larger codebook can be employed when the channel quality is high, allowing for significant gains in overall system throughput. In contrast, a smaller codebook can be employed when the cannel quality is poor, so that the added channel overhead associated with a larger code book does not reduce the channel efficiency under circumstances in which a larger codebook would not significantly improve system throughput.

CROSS-REFERENCE TO RELATED APPLICATION

This is a regular-filed application which is based on and claimspriority to U.S. Provisional Patent Application Ser. No. 60/896,374,entitled “Variable Codebook for MIMO System,” which was filed on Mar.22, 2007, the entire disclosure of which is hereby incorporated byreference herein.

FIELD OF TECHNOLOGY

The present disclosure relates generally to wireless communicationsystems and, more particularly, to a system and method for precodingwireless transmissions using a variable size codebook.

BACKGROUND

An ever-increasing number of relatively cheap, low power wireless datacommunication services, networks and devices have been made availableover the past number of years, promising near wire speed transmissionand reliability. Various wireless technologies are described in detailin the 802.11 IEEE Standard, including for example, the IEEE Standard802.11a (1999) and its updates and amendments, the IEEE Standard 802.11g(2003), 3GPP LTE, as well as the IEEE Standard 802.11n now in theprocess of being adopted, all of which are collectively incorporatedherein fully by reference. These standards have been or are in theprocess of being commercialized with the promise of 54 Mbps or moreeffective throughput such as 100 Mbps, making them a strong competitorto traditional wired Ethernet and the more ubiquitous “802.11b” or“WiFi” 11 Mbps mobile wireless transmission standard.

In general, transmission systems compliant with the IEEE 802.11a and802.11g or “802.11a/g,” 802.16 or 3GPP LTE, as well as the 802.11nstandards achieve high data transmission rates using OrthogonalFrequency Division Modulation or OFDM encoded symbols and usingquadrature amplitude modulation (QAM) on the OFDM sub-bands. In ageneral sense, the use of OFDM divides the overall system bandwidth intoa number of frequency sub-bands or channels, with each frequencysub-band being associated with a respective sub-carrier upon which datamay be modulated. Thus, each frequency sub-band of the OFDM system maybe viewed as an independent transmission channel within which to senddata, thereby increasing the overall throughput or transmission rate ofthe communication system.

Transmitters used in the wireless communication systems that arecompliant with the 802.11a/802.11g/802.11n standards as well as otherstandards such as the 3GPP LTE and 802.16a IEEE Standard, typicallyperform multi-carrier OFDM symbol encoding (which may include errorcorrection encoding and interleaving), convert the encoded symbols intothe time domain using Inverse Fast Fourier Transform (IFFT) techniques,and perform digital to analog conversion and conventional radiofrequency (RF) upconversion on the signals. These transmitters thentransmit the modulated and upconverted signals after appropriate poweramplification to one or more receivers, resulting in a relativelyhigh-speed time domain signal with a large peak-to-average ratio (PAR).

Likewise, the receivers used in the wireless communication systems thatare compliant with the 802.11a/802.11g/802.11n, 3GPP LTE and 802.16aIEEE standards typically include an RF receiving unit that performs RFdownconversion and filtering of the received signals (which may beperformed in one or more stages), and a baseband processor unit thatprocesses the OFDM encoded symbols bearing the data of interest. Thedigital form of each OFDM symbol presented in the frequency domain isrecovered after baseband downconverting, conventional analog to digitalconversion and Fast Fourier Transformation of the received time domainsignal. Thereafter, the baseband processor performs demodulation andfrequency domain equalization (FEQ) to recover the transmitted symbols,and these symbols are then processed with an appropriate FEC decoder,e.g. a Viterbi decoder, to estimate or determine the most likelyidentity of the transmitted symbol. The recovered and recognized streamof symbols is then decoded, which may include deinterleaving and furthererror correction using any of a number of known error correctiontechniques, to produce a set of recovered signals corresponding to theoriginal signals transmitted by the transmitter.

To further increase the number of signals which may be propagated in thecommunication system and/or to compensate for deleterious effectsassociated with the various propagation paths, and to thereby improvetransmission performance, it is known to use multiple transmission andreceive antennas within a wireless transmission system. Such a system iscommonly referred to as a multiple-input, multiple-output (MIMO)wireless transmission system and is specifically provided for within the3GPP LTE and the 802.11n IEEE Standard now being adopted. The use ofMIMO technology produces significant increases in spectral efficiency,throughput, and link reliability. These benefits generally increase asthe number of transmission and receive antennas included in the MIMOsystem increases.

In particular, in addition to the frequency channels created by the useof OFDM, a MIMO channel formed by the various transmission and receiveantennas between a particular transmitter and a particular receiverincludes a number of independent spatial channels. A wireless MIMOcommunication system can provide improved performance (e.g., increasedtransmission capacity) by utilizing the additional dimensionalitiescreated by these spatial channels for the transmission of additionaldata. Of course, the spatial channels of a wideband MIMO system mayexperience different channel conditions (e.g., different fading andmulti-path effects) across the overall system bandwidth and maytherefore achieve different SNRs at different frequencies (i.e., at thedifferent OFDM frequency sub-bands) of the overall system bandwidth.Consequently, the number of information bits per modulation symbol(i.e., the data rate) that may be transmitted using the differentfrequency sub-bands of each spatial channel for a particular level ofperformance may differ from frequency sub-band to frequency sub-band.

In MIMO wireless communication systems, the RF modulated signalstransmitted by the transmit antennas may reach the various receiveantennas via a number of different propagation paths, thecharacteristics of which typically change over time due to the phenomenaof multi-path and fading. Moreover, the characteristics of the variouspropagation sub-channels differ or vary based on the frequency ofpropagation. To compensate for the time varying, frequency selectivenature of these propagation effects, and generally to enhance effectiveencoding and modulation in a MIMO wireless communication system, andimprove the overall system throughput, the receiver of the MIMO wirelesscommunication system may periodically develop or collect channel stateinformation (CSI) for the wireless channel between the transmitter andreceiver. Generally, the wireless channel comprises a composite channelin which the effects of all combinations of transmit antennas andreceive antennas are taken into account. A channel matrix may be createdcomprising a plurality of complex channel values representing thechannel characteristics (for example, the gain, the phase and the SNR ofeach channel) between each transmit-receive antenna pair. Upondetermining the CSI for the composite channel, the receiver may send theCSI, or other information derived from the CSI, back to the transmitter,which may use the CSI or other information derived from the CSI, toprecondition or precode the signals transmitted over channel so as tocompensate for the varying propagation effects of the channels.

A preceding matrix may be developed which when multiplied with thetransmitted signal negates the propagation effects of the channel.However, because the propagation effects of the wireless channel varyover time, a single precoding matrix will only be sufficient tocompensate for one set of channel characteristics. Separate precedingmatrices must be developed to compensate for different sets of channelcharacteristics. A plurality of preceding matrices may be derived inadvance in order to compensate for a range of different channelconditions. The plurality of preceding matrices may be assembled in acodebook which may be stored in a memory associated with thetransmitter. Upon measuring the CSI, the receiver in a MIMO wirelesscommunication system may determine which of the precoding matrices inthe codebook is most appropriate to compensate for the measured CSI. Thereceiver may transmit a preceding matrix index or other identifier backto the transmitter specifying which precoding matrix in the codebookshould be used to precode signals to be transmitted over the channel.The transmitter may then precode signals using the specified precodingmatrix.

The size of the codebook, i.e. the number of precoding matrices includedin the codebook, can have a significant impact on system throughput andoverall channel efficiency. With a large codebook having many precedingmatrices to choose from, it is possible to select a precoding matrixwhich closely matches (i.e. counteracts) the measured propagationeffects of the channel. By accurately counter-acting the propagationeffects of the channel system throughput can be significantly improved.However, a larger codebook requires a larger amount of data to be fedback from the receiver to the transmitter in order to identify aparticular preceding matrix to be used for precoding transmittedsignals. The additional feedback data required of a large codebookconsumes additional channel overhead and has a negative impact onchannel efficiency. Under certain conditions, such as a channel with ahigh SNR, the improved system throughput associated with a largecodebook may be worth the cost in added overhead. In other cases, suchas a poor quality channel with a low SNR, the improved systemthroughput, even with a large codebook, may not justify the cost inincreased channel overhead. When designing a codebook for a MIMOwireless communication system there is a tension between creating alarge codebook with the possibility of significant improvements insystem throughput under favorable conditions and creating a smallercodebook which will consume less channel overhead, and will not diminishsystem throughput when channel conditions are less than ideal.

SUMMARY OF THE DISCLOSURE

The present disclosure generally relates to the use of a variable sizecodebook within a MIMO wireless communication system. The size of thecodebook may be determined by the quality of the wireless transmissionchannel between the transmitter and receiver, for example, or some othercodebook selection criteria. In some circumstances, it may be preferableto employ a larger codebook when the channel quality is high, allowingfor significant gains in overall same system throughput. On the otherhand, a smaller codebook may be preferable in circumstances when thechannel quality is poor, so that the added channel overhead associatedwith a larger code book does not reduce the channel efficiency. Forexample, a smaller codebook may be preferable when a larger codebookwould not significantly improve system throughput.

An embodiment provides a wireless transmission system. The wirelesstransmission system includes a base station and a terminal. The basestation is adapted to transmit wireless signals to the terminal. Amemory is associated with the base station. The memory stores a variablesize codebook that includes a first plurality of preceding matrices. Thepreceding matrices included in the variable size codebook may be usedfor preceding wireless signals transmitted by the base station. Theterminal is adapted to receive the wireless signals transmitted from thebase station. Channel state measuring circuitry associated with theterminal is provided for measuring transmission conditions of thewireless communication channel formed between the base station and theterminal. The terminal includes a feedback transmitter for wirelesslytransmitting channel state information from the terminal back to thebase station. The base station includes a feedback receiver forreceiving the channel state information fed back from the terminal. Thebase station selects a codebook size based on the channel stateinformation and selects a preceding matrix from a codebook of theselected codebook size for preceding wireless signals to be transmittedfrom the base station to the receiver. The variable size codebook maycomprise a second plurality of precoding matrices formed from a subsetof the first plurality of preceding matrices included in the variablesized codebook. Alternatively, the variable sized codebook may comprisea plurality of fixed size codebooks containing different numbers ofpreceding matrices.

Another embodiment relates to a multiple-input-multiple-output (MIMO)wireless communication system that includes a base station adapted totransmit a plurality of wireless data streams. The base station includesa memory that stores a variable size codebook for preceding the datastreams transmitted by the base station. The MIMO wireless communicationsystem further includes a terminal adapted to receive wirelesstransmissions, including at least one of the plurality of data streamstransmitted by the base station. The terminal includes channel statemeasuring circuitry for measuring channel state information relating tothe wireless communication channel established between the base stationand the terminal. The terminal further includes a feedback transmitterfor wirelessly transmitting a feedback signal related to the channelstate information back to the base station. The base station includes afeedback receiver for receiving the feedback signal transmitted from theterminal. The base station is adapted to select a codebook size and apreceding matrix from a codebook of the selected size based on thechannel state information received by the feed back receiver.

A further embodiment provides a method of precoding a wirelesstransmission signal. The method includes measuring a characteristic of awireless communication channel, selecting a codebook size based on themeasured characteristic of the wireless communication channel, andprecoding the wireless transmission signal using a preceding matrixincluded in a codebook of the selected size. The method may includeproviding a fixed size codebook having a plurality of precedingmatrices, and creating a codebook of the selected codebook size from asubset of the preceding matrices found in the fixed size codebook.Alternatively, the method may include providing a plurality of fixedsize codebooks of different sizes.

Yet another embodiment relates to a wireless transmitter employing avariable size preceding codebook. The transmitter includes a memorystoring one or more preceding codebooks. The transmitter furtherincludes a feedback receiver for receiving channel state informationfrom a receiver. A codebook selector associated with the transmitter isadapted to select a codebook size base on channel state informationreceived from the receiver. Finally, the transmitter includes atransmission signal precoder adapted to precode a wireless transmissionsignal using a preceding matrix from a codebook of the selected size.

Still another embodiment provides a wireless receiver for use in a MIMOwireless communication system employing a variable size precodingcodebook. The receiver includes channel state measuring circuitry forgenerating channel state information describing the state of thechannel. A codebook size selector is provided for selecting the size ofa codebook to be used for preceding signals to be sent by a transmitterto the receiver over the wireless channel. The codebook size is selectedbased on the channel state information measured by the channel statemeasuring circuitry. Finally, the receiver includes a feedbacktransmitter for transmitting a codebook index or other codebook sizeindicator to the wireless transmitter. Upon receiving the codebook indexor other codebook size indicator, the wireless transmitter may precodewireless transmissions directed toward the receiver using a precedingmatrix included in a codebook of the selected size.

BRIEF DESCRIPTION OF THE DRAWINGS

FIG. 1 is a block diagram of a wireless MIMO communication system thatemploys a variable size codebook for preceding wireless transmissionsignals.

FIG. 2 is a flow chart showing a method of selecting a codebook size andidentifying a precoding matrix form within a codebook of the selectedsize based on codebook size and matrix selection criteria.

FIGS. 3A-3F illustrate examples of various different devices in which awireless communication system implementing a variable size codebookdescribed herein may be used.

DETAILED DESCRIPTION

The present disclosure generally relates to variable sized codebooks foruse in precoding data streams to be transmitted inmultiple-input-multiple-output (MIMO) wireless communication systems.The transmission characteristics of the wireless channel between thetransmitter and receiver of a MIMO wireless communication system changeover time. If the transmitter has a priori knowledge of the channelcharacteristics, signals may be preconditioned (precoded) to compensatein advance for the negative effects of transmitting the signals over thewireless channel. Under favorable conditions preceding signals in thismanner can significantly improve channel throughput.

In a MIMO wireless communication system the communication channel may berepresented as a matrix of complex channel values that represent thetransmission effects of all combinations of the transmitting andreceiving antennas. A preceding matrix may be derived which counteractsthe negative effects of transmitting signals over the wirelesscommunication channel. A signal may be multiplied by the precedingmatrix before transmission over the wireless communication channel. Uponreceiving such precoded signals the receiver has a much better chance ofrecovering the original signal, notwithstanding the negative effects ofthe wireless channel. Precoding signals in this manner can significantlyimprove system throughput.

Since the channel characteristics change over time, a finite number ofprecoding matrices may be derived in advance, each matrix adapted tocompensate for a particular set of channel characteristics. Theplurality of preceding matrices may be collected into a codebook andstored at the transmitter. Upon measuring the existing channelcharacteristics an appropriate preceding matrix may be selected from thecodebook and applied to a signal before the signal is transmitted overthe wireless communication channel.

Typically, channel state information (CSI) is calculated at the receiverbased on a known signal transmitted from the transmitter to thereceiver. The CSI is fed back to the transmitter and the transmitterchooses an appropriate preceding matrix for precoding subsequent signalsfrom the codebook. Alternatively, the receiver may have knowledge of thecodebook and the receiver itself may be adapted to select an appropriatepreceding matrix from the codebook. In this case, the receiver feedsback a preceding matrix index or other identifier to the transmitterthat specifies the appropriate preceding matrix for preceding signals tobe sent from the transmitter to the receiver given the channelconditions observed by the receiver.

If the codebook is large, containing many different preceding matricesfor addressing a large number of different channel conditions, apreceding matrix may be selected which is closely paired to thecharacteristics of the wireless channel in order to achieve the greatestpossible improvement in system throughput. If the codebook is small, itwill be less likely that the preceding matrix will precisely compensatefor the negative effects of the channel characteristics. Therefore, witha smaller codebook the improvement in channel throughput may not be asdramatic as with a larger codebook. However, a larger codebook requiresgreater specificity to identify the appropriate precoding matrix for agiven set of channel conditions. The greater specificity required of alarger codebook requires more data, either in the form of a longermatrix index identifier or more detailed CSI, to be fed back from thereceiver to the transmitter than would otherwise be the case if asmaller codebook were employed. The additional channel overhead requiredof a larger codebook can reduce overall channel efficiency. Thus, thereare tradeoffs that may be considered when selecting the size of thecodebook.

Another factor to consider when selecting the size of the codebook isthe state of the channel at the time the signals are transmitted. Insome cases, for example when the channel exhibits a high signal tointerference-plus-noise-ratio (SINR), accurate precoding of the signalsmay result in dramatically improved channel throughput. In other cases,such as when the SINR is low, preceding results may be marginal at best.When channel conditions warrant, it may be desirable to have a largecodebook containing a large number of preceding matrices to choose fromso that the maximum gains in channel throughput may be realized. On theother hand, when channel conditions are such that the positive effectsof preceding will be limited, a smaller codebook with a more limitednumber of preceding matrices may be employed in order to reduce channeloverhead.

Because of the increased cost in channel overhead associated with alarger codebook, a larger codebook may be more effective in situationsin which the gain in channel throughput associated with the use of thelarger codebook outweighs the cost in channel overhead. In other cases asmaller codebook may be more appropriate. Because the wireless channelconditions change over time, there may be times when a larger codebookis more beneficial and other times when a smaller codebook is moreappropriate. Unfortunately, the channel conditions typically cannot beknown in advance. It is difficult to determine whether the improvedsystem performance associated with a large codebook will justify thecost in channel overhead, or whether a smaller codebook should beemployed. A solution is to use a variable size codebook, employing amore limited set of preceding matrices when channel conditions are suchthat the expected gains in system throughput associated with the use ofa larger codebook may not justify the cost in increased channeloverhead, and expanding the selection of available precoding matrices(i.e., using a larger codebook) when the channel conditions are suchthat the expected gains in system throughput may exceed the penalty paidin additional overhead.

Referring now to FIG. 1, a MIMO communication system 10 is illustratedin block diagram form. The MIMO communication system 10 generallyincludes a single transmitter 12 having multiple transmission antennas14 ₁-14 _(N) and a single receiver 16 having multiple receiver antennas18 ₁-18 _(M). In an embodiment of a MIMO wireless communication systemthe transmitter 12 may actually be a base station capable of bothtransmitting signals to one or more remote terminals. The receiver 16may in turn be one such remote terminal, capable of receiving signalstransmitted from the base station as well as transmitting signals backto the base station 12. Though both the base station and the terminalmay be capable of both transmitting and receiving signals, the basestation will be referred to herein as the transmitter 12 and theterminal will be referred to as the receiver 16. The number oftransmission antennas 14 ₁-14 _(N) can be the same as, more than, orless than the number of receiver antennas 18 ₁-18 _(M). As shown in FIG.1, the transmitter 12 may include a controller 20 coupled to a memory21, a symbol encoder/modulator unit 22, a precoding block 23, aspace-time mapping block 24, and a codebook selection block 28. Thetransmitter 12 may also include a matrix equalizer 25 and a symboldemodulator and decoder unit 26 to perform demodulation and decoding ofsignals received via the antennas 141-14N in a receive mode.

The controller 20 may be any desired type of controller and thecontroller 20 and the codebook/matrix selection block 28 may beimplemented as one or more standard multi-purpose, programmableprocessors, such as a general purpose micro-processor, a digital signalprocessor, an application specific integrated circuit (ASIC), etc., ormay be implemented using any other desired types of hardware, softwareand/or firmware. Likewise, the precoding block 23, the space-timemapping block 24, and the matrix equalizer 25 may be implemented usingknown or standard hardware and/or software elements. If desired, variousof the transmitter components, such as the controller 20, the symbolencoder/modulator unit 22, the symbol demodulator/decoder unit 26, thecodebook/matrix selection block 28, the precoding block 23, thespace-time mapping block 24 and the matrix equalizer 25 may beimplemented in the same or in different hardware devices, such as in thesame or different processors. Additionally, each of these components ofthe transmitter 12 may be disposed in a housing 29 (shown in dottedrelief in FIG. 1) and the routines or instructions for implementing thefunctionality of any of these components may be stored in the memory 21or within other memory devices associated with the individual hardwareused to implement these components.

A variable size codebook may be stored in the memory 21. Thevariable-size codebook may be implemented in a number of different ways.For example, the variable size codebook may comprise a single fixed sizecodebook including a large number of pre-calculated precoding matrices.Smaller codebooks of differing sizes may be constructed from subsets ofthe plurality of precoding matrices found in the fixed size codebook.For example, a fixed size codebook having sixty-four preceding matricesmay be stored in the memory 21. A second smaller codebook having onlythirty-two precoding matrices may be created by selecting every othermatrix found in the larger sixty-four matrix fixed size codebook.Similarly, a third codebook of sixteen matrices may be created byselecting every fourth matrix from the larger fixed size codebook. Acodebook of eight matrices may be created by selecting every eighthmatrix from the larger fixed size codebook, and a codebook of just fourmatrices may be created by selecting every sixteenth matrix from thelarger fixed size codebook. Of course, these are just examples of themanner in which smaller codebooks may also be generated from a largerfixed size codebook. Codebooks comprising other subsets of a largerfixed size codebook may also be employed. Another alternative is tosimply store a plurality of different size codebooks. For example, afirst codebook having sixty-four preceding matrices may be stored in thememory 21. A second separate codebook having thirty-two precedingmatrices may also be stored in the memory 21. A third codebook having 16preceding matrices, a fourth codebook having eight preceding matricesand a fifth codebook having just four preceding matrices may also bestored separately in the memory 21.

One or more pre-calculated or predetermined spreading matrices may alsobe stored in the memory 21 and used in the spreading matrix block 24 atvarious times or under various different conditions. Thus, for example,a different pre-calculated or predetermined space-time mapping matrixmay be stored for each of a number of possible combinations of encodedspatial streams of data to be transmitted and transmission antennas 14to be used to simultaneously transmit these encoded spatial streams ofdata. Thus, for example, a different space-time mapping matrix may becalculated and stored for two spatial streams of data being sent viathree of the transmission antennas 14, for two spatial streams of databeing sent via four of the transmission antennas 14, for three spatialstreams of data being sent via five transmission antennas 14, etc. Inthis manner, the communication system 10 may optimally send differentnumbers of spatial streams of data at different times, depending on theload of the system. Moreover, the communication system 10 may also usethese various different pre-stored or pre-calculated space-time mappingmatrices to account for or to adapt to the loss of one or more of thetransmission antennas 14 to be used in sending data within thecommunication system 10.

During operation, information signals Tx₁-Tx_(n) which are to betransmitted from the transmitter 12 to the receiver 16 are provided tothe symbol encoder/modulator unit 22 for encoding and modulation. Ofcourse, any desired number of signals Tx₁-Tx_(n) may be provided to themodulator unit 22, with this number generally being limited by themodulation scheme employed by and the bandwidth associated with the MIMOcommunication system 10. Additionally, the signals Tx₁-Tx_(n) may be anytype of signals, including analog or digital signals, and may representany desired type of data or information. Additionally, if desired, aknown test or control signal Cx₁ (which may be stored in the memory 21)may be provided to the symbol encoder and modulator unit 22 for use indetermining CSI related information describing the characteristics ofthe channel(s) between the transmitter 12 and the receiver 16. Ifdesired, the same control signal or a different control signal may beused to determine the CSI for each frequency sub-band and/or spatialchannel used in the MIMO communication system 10.

The symbol encoder and modulator unit 22 may interleave digitalrepresentations of the various signals Tx₁-Tx_(n) and Cx₁ and mayperform any other known type(s) of error-correction encoding on thesignals Tx₁-Tx_(n) and Cx₁ to produce one or more encoded streams ofsymbols SS₁, SS₂, . . . SS_(p), to be modulated and sent from thetransmitter 12 to the receiver 16. While the symbol streams SS₁-SS_(p)may be modulated using any desired or suitable QAM technique, such asusing 64 QAM, these symbols may be modulated in any other known ordesired manner including, for example, using any other desired phaseand/or frequency modulation techniques. In any event, the modulatedencoded symbol streams SS₁-SS_(p) are provided by the symbol encoder andmodulator unit 22 to the preceding block 23. The individual symbolscomprise vectors which may be multiplied by the appropriate precedingmatrix in the precoding block 23. The controller 20 receives a feedbacksignal from the receiver 16 which is used by the controller 20 toidentify an appropriate preceding matrix stored in the variable sizecodebook stored in the memory 21. The controller 20 accesses thevariable size codebook stored in the memory 21 and retrieves a precodingmatrix appropriate for the channel characteristics and conditionsprevailing at the time and provides the selected precoding matrix to thepreceding block 23. The preceding block 23 multiplies the modulatedencoded symbol streams SS₁-SS_(p) by the selected preceding matrix, thenprovides the preceded symbol streams to the space-time mapping block 24for processing before being transmitted via the antennas 14 ₁-14 _(N).While not specifically shown in FIG. 1, the precoded modulated symbolstreams SS₁-SS_(p) may be processed by the space-time mapping block 24that implements a space-time mapping matrix optionally in accordancewith a transmission technique disclosed in co-pending U.S. patentapplication Ser. No. 11/851,237 entitled “Equal Power Output SpatialSpreading Matrix For Use In A MIMO Communication System,” filed Sep. 6,2007, the entire disclosure of which is incorporated herein byreference, before being up-converted to the RF carrier frequenciesassociated with an OFDM technique (in one or more stages). Uponreceiving the modulated signals, the space-time mapping block 24processes the modulated signals by injecting delays and/or gains intothe modulated signals based on a space-time mapping matrix which may beprovided by, for example, the controller 12, to thereby perform mixingand transmission of the spatial streams of data across the transmissionantennas 14 ₁-14 _(N).

The signals transmitted by the transmitter 12 are detected by thereceiver antennas 18 ₁-18 _(M) and may be processed by a matrixequalizer 35 within the receiver 16 to enhance the receptioncapabilities of the antennas 18 ₁-18 _(M). A symbol demodulator anddecoder unit 36, under control of the controller 40, may decode anddemodulate the received symbol strings SS₁-SS_(p) as recovered by thematrix equalizer 35. In this process, these signals may be downconvertedto baseband. Generally, the demodulator and decoder unit 36 may operateto perform demodulation on the received symbols in each symbol streamSS₁-SS_(p) to produce a digital bit stream for each symbol stream. Insome cases, if desired, the symbol demodulator and decoder unit 36 mayperform error correction decoding and deinterleaving on the bit streamto produce the received signals Rx₁-Rx_(n) corresponding to theoriginally transmitted signals Tx₁-Tx_(n).

The MIMO wireless communication system 10 may also provide a reversechannel whereby signals may be transmitted from the receiver 16 back totransmitter 12. Thus, as shown in FIG. 1, the receiver 16 may alsoinclude a memory 48, a symbol encoder and modulator unit 46, a precedingblock 33, and a space-time mapping block 34. The symbolencoder/modulator 46 may receive one or more signals TR₁-TR_(m). Thesignals TR₁-TR_(m) may be encoded and modulated by the symbolencoder/modulator 46 using any desired encoding and modulationtechniques. The memory 48 optionally may store a variable size codebooksimilar to that stored in the transmitter memory 21. The controller 40may access the memory 48 to retrieve an appropriate preceding matrix forpreceding the encoded and modulated symbol streams received from thesymbol encoder/modulator 46. The preceded symbol stream may then beupconverted and processed by a space-time mapping block 34 which may usea space-time mapping matrix developed according to the principlesdescribed herein based on the number of symbol streams to be sentsimultaneously and the number of transmission antennas 18 to be used.The output of the space-time mapping block 34 is then transmitted viathe receiver antennas 18 ₁-18 _(N) to, for example, the transmitter 12,thereby implementing the reverse link. The transmitter 12 may implementa matrix equalizer 25 and symbol demodulator/decoder 26 for receiving,demodulating and decoding signals transmitted from the receiver orterminal 16 to the transmitter or base station 16 over the reversechannel.

The matrix equalizer 25 and the demodulator/decoder unit 26 within thetransmitter 12 operate similarly to the matrix equalizer 35 and thedemodulator/decoder unit 36 of the receiver 16 to demodulate and decodethe symbol streams transmitted by the receiver 16 to produce therecovered signals RR₁-RR_(m). Here again, the matrix equalizer 25 mayprocess the received signals in any known manner to enhance theseparation and therefore the reception of the various symbol streamstransmitted by the antennas 18 ₁-18 _(M).

As mentioned above, the transmitter or base station controller 20selects an appropriate preceding matrix from the variable size codebookstored in the memory 21 based on a feedback signal received from thereceiver 16. In order to determine the appropriate codebook size andselect the best preceding matrix for the channel conditions, thereceiver 16 includes the codebook/matrix selection block 41. When thereceiver 16 receives signals from the transmitter 12, such as the knowntest signal Cx₁, the codebook/matrix selection block 41 (or thecontroller 40) measures channel state information relating thecharacteristics and quality of the wireless channel between thetransmitter and the receiver. The channel state information may comprisea matrix of complex channel values that take into account thecontributions of all combinations of the transmitting antennas 14 ₁-14_(N) and the receiving antennas 18 ₁-18 _(M). The channel stateinformation measured by the codebook/matrix selection block 41 mayinclude, for example, the channel gain and phase delay characteristicsbetween each pair of transmit and receive antennas. The codebook matrixselection block 41 may also measure channel quality, in the form of(SINR), a signal-to-noise-ratio (SNA), or some other measure of thechannel quality. The codebook/matrix selection block 41 then evaluatesthe channel state information using various criteria to select first themost appropriate code book to use given the measured channel conditions,and then a particular preceding matrix from the selected codebook forpreceding signals. The identity of or size of the selected codebookalong with the identity of the selected preceding matrix is then fedback to the transmitter 12 so that the transmitter controller 20 mayselect the proper preceding matrix from the appropriate size codebookstored in the memory 21. The selected codebook and the selectedpreceding matrix within the selected codebook may be fed back to thetransmitter 12 via the reverse transmission channel, or over anotherdedicated feedback channel (not shown).

A selected precoding matrix may be specified by identifying a particularsize codebook from which the precoding matrix is to be selected and aspecific preceding matrix within the identified codebook. For example,in an embodiment in which four different sized codebooks are employed(e.g. codebooks containing 64, 32, 16 and 8 preceding matricesrespectively), a minimum of 2 bits are required to identify one of thefour different codebooks. An additional six bits are required toidentify a particular preceding matrix within the largest codebook, ifthe codebook having 64 preceding matrices is selected. If the codebookhaving 32 matrices is selected, an additional 5 bits are required tospecify a particular preceding matrix. Four additional bits are requiredto identify a particular preceding matrix if the codebook having 16matrices is specified, and only 3 additional bits are required toidentify a particular preceding matrix if the smallest codebook having 8precoding matrices is employed. If the channel quality is poor, it isunlikely that system throughput will significantly improved by using aprecoding matrix from one of the larger codebooks. In this case it maynot be worth the price in additional channel overhead to use a precodingmatrix from one of the larger codebooks and a smaller codebook may beselected. If channel conditions are better, however, and it is likelythat channel throughput will be improved using a larger codebook by anamount significantly greater than the amount of channel capacityconsumed by the additional overhead required to identify a precedingmatrix within the larger codebook, the improved channel throughputassociated with selecting a precoding matrix from the larger codebookmay justify the increased cost in channel overhead.

When employing a variable size codebook in a MIMO wireless communicationsystem, objective criteria may be established for selecting theappropriate size codebook. Since there is a tradeoff between increasedsystem throughput and increased channel overhead associated with using alarger codebook, one appropriate codebook selection criterion is tocompare the expected channel throughput associated with a particularsize codebook against the cost in feedback channel overhead associatedwith using that size codebook. In a MIMO wireless communication system,channel throughput is highly dependent on the transmission quality ofthe wireless channel. The receiver may measure the SNR or the SINR orsome measure of the channel quality from the signals received by thereceiving antennas 18 ₁-18 _(M). The codebook/matrix selection block 41may then calculate an expected throughput for each of the differentsized codebooks available for precoding signals to be transmitted to thereceiver 16. A ratio may be calculated for each of the different sizedcodebooks comparing the expected throughput associated with eachcodebook to the corresponding cost in additional overhead. Whichevercodebook offers the highest ratio of improved channel performance tooverhead cost will be selected. Of course, other codebook selectioncriteria may also be used. For example, a series of SNR or SINRthresholds may be established. The codebook size may be selected basedon where the measured SNR or SINR falls in relation to the establishedthresholds. When the measured SNR or SINR is below a first threshold thesmallest available codebook may be selected. If the measured SNR or SINRis greater than or equal to the first threshold value, but less than thesecond threshold value, the next larger available codebook may beselected, and so on until there is a proper sized codebook identifiedfor every possible set of channel conditions.

Once a particular size codebook has been selected the codebook matrixselection block 41 may select a particular preceding matrix from theselected codebook. The preceding matrix may be selected in a mannersimilar to the process of selecting the size of the codebook. Someobjective criteria, such as the maximum sum throughput, may be definedand calculated for each precoding matrix within the selected codebook.The precoding matrix that produces the highest maximum sum throughput(or some other objective measure) may then be selected for preceding thesymbols to be transmitted from the transmitter to the receiver.

FIG. 2 is a flowchart illustrating the process of selecting a precedingmatrix in a MIMO wireless communication system employing a variable sizecodebook. A first step 202 is to provide a variable size codebook thatincludes a plurality of preceding matrices that may be employed toprecode signals transmitted from a wireless transmitter to a wirelessreceiver within a MIMO wireless communication system. As describedabove, the variable sized codebook may comprise a single large codebookhaving a large number of precoding matrices from which smaller codebooksmay be defined by selecting smaller subsets of the preceding matricesfound in the larger codebook. Alternatively, the variable sized codebookmay comprise a collection of differently sized codebooks, each adaptedfor different channel conditions.

Next, at block 204, the process of applying a variable sized codebook toa MIMO wireless communication channel calls for measuring one or morecharacteristics of the wireless communication channel. At least one ofthe measured characteristics relates to codebook size and precedingmatrix selection criteria. The codebook size criteria are employed todetermine the size or identity of a particular codebook from which aprecoding matrix may be selected for preceding wireless transmissionsfrom the transmitter to the receiver in the MIMO wireless communicationsystem. The measured communication channel characteristics may comprise,for example, the SNR, SINR, or some other measure of the channelquality. Once the channel characteristics have been measured, theprocess next calls for selecting the best codebook at block 206. Thisstep requires evaluating predefined codebook selection criteria relatingto the state of the wireless communication channel. For example, thecriteria for selecting the size of the codebook from which a precodingmatrix will be selected may include comparing the cost in channeloverhead associated with each available codebook to the correspondingexpected gain in system throughput associated with each availablecodebook. Typically, the expected throughput associate with each of thedifferent size codebooks will be heavily influenced by the measuredstate of the communication channel. The codebook that offers thegreatest expected throughput under the measured channel conditions forthe least additional cost in channel overhead may be selected.

Once the best codebook for the given channel conditions has beenselected, a determination is made at decision block 208 whether theselected codebook is the same codebook that was used for precoding aprevious transmission. If the codebook is the same, the processcontinues directly to block 212 where the best preceding matrix for themeasured channel conditions is selected. If the selected codebook is notthe same as the codebook used for preceding the previous transmission,the process switches to the new codebook at block 210 before proceedingto select the best precoding matrix from the new codebook at block 212.

At block 212, predefined matrix selection criteria are applied todetermine the best preceding matrix in the selected codebook forpreceding wireless transmissions given the measured channel conditions.The best matrix selection criteria may comprise, for example,calculating the maximum sum throughput for each matrix in the selectedcodebook, and selecting the matrix which provides the greatestthroughput given the measured channel characteristics.

Once the preceding matrix has been selected at 212, a determination ismade at decision block 214 whether the selected preceding matrix is thesame as a preceding matrix employed to precode a previous transmission.If so, the process continues directly to block 218 where an indexidentifying the selected codebook and the selected preceding matrix isfed back to the transmitter so that the transmitter may access theidentified codebook and the identified precoding matrix within theidentified codebook in order to precode a wireless transmission to besent from the transmitter to the receiver in the MIMO wirelesscommunication system. If, however, it is determined a decision block 214that the selected preceding matrix is not the same preceding matrix thatwas employed on the previous transmission, the process switches to thenew preceding matrix at block 216 before proceeding to feed back theidentity selected codebook and the selected matrix to the transmitter atblock 218.

Once the selected codebook and preceding matrix have been selected andtheir identities fed back to the transmitter for preceding a nextwireless transmission, the process waits for the next reporting periodat block 220. The process may be adapted to re-evaluate channelconditions and select a codebook and preceding matrix at certainpredefined rate, or after a predefined period of time, after a certainnumber of transmissions or based on some other criteria. In any case, atthe beginning of the next reporting period the process returns to block202 and repeats.

Variable size codebook techniques such as described above may beutilized in any type of wireless communication system including, forexample, ones used in wireless computer systems such as thoseimplemented via a wireless local area network (WLAN) or a wide areawireless network (e.g., WiMax), internet, cable and satellite basedcommunication systems (such as internet, data, video and voicecommunication systems), wireless telephone systems (including cellularphone systems, voice over internet protocol (VoIP) systems, home-basedwireless telephone systems, etc.) Referring now to FIGS. 3A-3H, variousexemplary implementations of the present invention are shown.

Referring now to FIG. 3A, variable size codebooks may be utilized in ahigh definition television (HDTV) 420 which may include either or bothsignal processing and/or control circuits, which are generallyidentified in FIG. 3C at 422, a WLAN network interface 429 and/or massdata storage 427 of the HDTV 420. HDTV 420 receives HDTV input signalsin either a wired or wireless format and generates HDTV output signalsfor a display 426. In some implementations, signal processing circuitand/or control circuit 422 and/or other circuits (not shown) of HDTV 420may process data, perform coding and/or encryption, performcalculations, format data and/or perform any other type of HDTVprocessing that may be required. Variable size codebook techniques maybe utilized in the signal processing circuit and/or control circuit 422and/or the WLAN network interface 429, for example.

HDTV 420 may communicate with mass data storage 427 that stores data ina nonvolatile manner such as optical and/or magnetic storage devicessuch as a hard disk drive (HDD) or a digital versatile disk (DVD) drive.The HDD may be a mini HDD that includes one or more platters having adiameter that is smaller than approximately 1.8″. HDTV 420 may beconnected to memory 428 such as RAM, ROM, low latency nonvolatile memorysuch as flash memory and/or other suitable electronic data storage. HDTV420 also may support connections with a WLAN via the WLAN networkinterface 429 which may implement the beamforming techniques describedabove.

Referring now to FIG. 3B, the present invention may be used inconjunction with a control system of a vehicle 430 having a WLAN networkinterface 448 and/or mass data storage 446. In some implementations, maybe used within a powertrain control system 432 that receives inputs fromone or more sensors such as temperature sensors, pressure sensors,rotational sensors, airflow sensors and/or any other suitable sensorsand/or that generates one or more output control signals such as engineoperating parameters, transmission operating parameters, brakingparameters, and/or other control signals.

Variable size codebook techniques may also be utilized in other controlsystems 440 of vehicle 430. Control system 440 may likewise receivesignals from input sensors 442 and/or output control signals to one ormore output devices 444. In some implementations, control system 440 maybe part of an anti-lock braking system (ABS), a navigation system, atelematics system, a vehicle telematics system, a lane departure system,an adaptive cruise control system, a vehicle entertainment system suchas a stereo, DVD, compact disc and the like. Still other implementationsare contemplated.

Powertrain control system 432 may communicate with mass data storage 446that stores data in a nonvolatile manner. Mass data storage 446 mayinclude optical and/or magnetic storage devices, for example, a harddisk drive (HDD) and/or a DVD drive. The HDD may be a mini HDD thatincludes one or more platters having a diameter that is smaller thanapproximately 1.8″. Powertrain control system 432 may be connected tomemory 447 such as RAM, ROM, low latency nonvolatile memory such asflash memory and/or other suitable electronic data storage. Powertraincontrol system 432 also may support connections with a WLAN via the WLANnetwork interface 448 which may implement the beamforming techniquesdescribed above. The control system 440 may also include mass datastorage, memory and/or a WLAN network interface (all not shown).Variable size codebook techniques may be utilized on the WLAN networkinterface 448 of the powertrain control system and/or the WLAN networkinterface of the control system 440.

Referring now to FIG. 3C, variable size codebook techniques may beembodied in a cellular phone 450 that may include one or more cellularantennas 451, either or both signal processing and/or control circuits,which are generally identified in FIG. 3C at 452, a WLAN networkinterface 468 and/or mass data storage 464 of the cellular phone 450. Insome implementations, cellular phone 450 includes a microphone 456, anaudio output 458 such as a speaker and/or audio output jack, a display460 and/or an input device 462 such as a keypad, pointing device, voiceactuation and/or other input device. Signal processing and/or controlcircuits 452 and/or other circuits (not shown) in cellular phone 450 mayprocess data, perform coding and/or encryption, perform calculations,format data and/or perform other cellular phone functions.

Cellular phone 450 may communicate with mass data storage 464 thatstores data in a nonvolatile manner such as optical and/or magneticstorage devices, for example, a hard disk drive (HDD) and/or a DVDdrive. The HDD may be a mini HDD that includes one or more plattershaving a diameter that is smaller than approximately 1.8″. Cellularphone 450 may be connected to memory 466 such as RAM, ROM, low latencynonvolatile memory such as flash memory and/or other suitable electronicdata storage. Cellular phone 450 also may support connections with aWLAN via the WLAN network interface 468. Variable size codebooktechniques may be utilized on the WLAN network interface 468 and/or thesignal processing and/or control circuits 452.

Referring now to FIG. 3D, the variable size codebook techniques may beembodied in a set top box 480 including either or both signal processingand/or control circuits, which are generally identified in FIG. 3D at484, a WLAN network interface 496 and/or mass data storage 490 of theset top box 480. Set top box 480 receives signals from a source such asa broadband source and outputs standard and/or high definitionaudio/video signals suitable for a display 488 such as a televisionand/or monitor and/or other video and/or audio output devices. Signalprocessing and/or control circuits 484 and/or other circuits (not shown)of the set top box 480 may process data, perform coding and/orencryption, perform calculations, format data and/or perform any otherset top box function.

Set top box 480 may communicate with mass data storage 490 that storesdata in a nonvolatile manner. Mass data storage 490 may include opticaland/or magnetic storage devices, for example, a hard disk drive HDDand/or a DVD drive. The HDD may be a mini HDD that includes one or moreplatters having a diameter that is smaller than approximately 1.8″. Settop box 480 may be connected to memory 494 such as RAM, ROM, low latencynonvolatile memory such as flash memory and/or other suitable electronicdata storage. Set top box 480 also may support connections with a WLANvia the WLAN network interface 496 which may implement the beamformingtechniques described herein. Variable size codebook techniques may beutilized in the signal processing and/or control circuits 484 and/or theWLAN network interface 496.

Referring now to FIG. 3E, the variable size codebook techniques may beembodied in a media player 500. The variable size codebook techniquesmay be implemented in either or both the signal processing and/orcontrol circuits, which are generally identified in FIG. 3E at 504, anda WLAN network interface 516 and/or mass data storage 510 of the mediaplayer 500. In some implementations, media player 500 includes a display507 and/or a user input 508 such as a keypad, touchpad and the like. Insome implementations, media player 500 may employ a graphical userinterface (GUI) that typically employs menus, drop down menus, iconsand/or a point-and-click interface via display 507 and/or user input508. Media player 500 further includes an audio output 509 such as aspeaker and/or audio output jack. Signal processing and/or controlcircuits 504 and/or other circuits (not shown) of media player 500 mayprocess data, perform coding and/or encryption, perform calculations,format data and/or perform any other media player function.

Media player 500 may communicate with mass data storage 510 that storesdata such as compressed audio and/or video content in a nonvolatilemanner. In some implementations, the compressed audio files includefiles that are compliant with MP3 format or other suitable compressedaudio and/or video formats. The mass data storage may include opticaland/or magnetic storage devices, for example, a hard disk drive (HDD)and/or a DVD drive. The HDD may be a mini HDD that includes one or moreplatters having a diameter that is smaller than approximately 1.8″.Media player 500 may be connected to memory 514 such as RAM, ROM, lowlatency nonvolatile memory such as flash memory and/or other suitableelectronic data storage. Media player 500 also may support connectionswith a WLAN via the WLAN network interface 516 which may implement thebeamforming techniques described herein. Still other implementations inaddition to those described above are contemplated.

Referring to FIG. 3F, the variable size codebook techniques may beembodied in a Voice over Internet Protocol (VoIP) phone 600 that mayinclude one or more antennas 618, either or both signal processingand/or control circuits, which are generally identified in FIG. 3F at604, and a wireless interface and/or mass data storage 602 of the VoIPphone 600. In some implementations, VoIP phone 600 includes, in part, amicrophone 610, an audio output 612 such as a speaker and/or audiooutput jack, a display monitor 614, an input device 616 such as akeypad, pointing device, voice actuation and/or other input devices, anda Wireless Fidelity (Wi-Fi) communication module 608. Signal processingand/or control circuits 604 and/or other circuits (not shown) in VoIPphone 600 may process data, perform coding and/or encryption, performcalculations, format data and/or perform other VoIP phone functions.

VoIP phone 600 may communicate with mass data storage 602 that storesdata in a nonvolatile manner such as optical and/or magnetic storagedevices, for example, a hard disk drive (HDD) and/or a DVD drive. TheHDD may be a mini HDD that includes one or more platters having adiameter that is smaller than approximately 1.8″. VoIP phone 600 may beconnected to memory 606, which may be a RAM, ROM, low latencynonvolatile memory such as flash memory and/or other suitable electronicdata storage. VoIP phone 600 is configured to establish communicationslink with a VoIP network (not shown) via Wi-Fi communication module 608which may implement the beamforming techniques described herein.Variable size codebook techniques may be employed in either or both thesignal processing and/or control circuits 604 and the Wi-Ficommunication module 608.

Moreover, while the present invention has been described with referenceto specific examples, which are intended to be illustrative only and notto be limiting of the invention, changes, additions and/or deletions maybe made to the disclosed embodiments without departing from the spiritand scope of the invention. For example, one or more steps of the methoddescribed above may be performed in a different order or concurrently toachieve desirable results.

1. A wireless transmission system comprising: a base station configuredto transmit wireless signals; a memory associated with the base station,the memory configured to store a variable size codebook comprising i) afirst codebook having a codebook size comprising a first plurality ofprecoding matrices for precoding the wireless signals, and ii) a secondcodebook having a codebook size comprising a second plurality ofprecoding matrices for precoding the wireless signal; a terminalconfigured to receive wireless signals; channel state measuringcircuitry associated with the terminal, the channel state measuringcircuitry configured to measure transmission conditions of a wirelesscommunication channel between the base station and the terminal; acodebook selector associated with the terminal, the codebook selectorconfigured to select a size of a codebook based on i) an expectedthroughput for each of a plurality of different codebook sizes given thechannel state information measured by the channel state measuringcircuitry and ii) channel overhead associated with each of the pluralityof different codebook sizes; a feedback transmitter associated with theterminal the feedback transmitter configured to wirelessly transmit anindicator of a codebook corresponding to the selected size of thecodebook from the terminal to the base station; and a feedback receiverassociated with the base station, the feedback receiver configured toreceive the indicator of the codebook from the terminal, wherein thebase station is configured to select a codebook size based on theindicator of the codebook from the terminal, and wherein the basestation is configured to select a precoding matrix from a codebookselected by the base station for precoding wireless signals to betransmitted from the base station.
 2. The wireless transmission systemof claim 1, wherein the variable size codebook comprises a plurality offixed size codebooks containing different numbers of precoding matrices.3. The wireless transmission system of claim 1, wherein the channelstate information measured by the channel state measuring circuitrycomprises a signal interference plus noise ratio (SINR).
 4. Amultiple-input-multiple-output (MIMO) wireless communication systemcomprising: a base station configured to transmit a plurality ofwireless data streams, the base station including a memory to store avariable size codebook for precoding the data streams, wherein thevariable size codebook corresponds to a plurality of codebook sizescorresponding to different gradations of precoding matrix quantization;a terminal configured to receive wireless transmissions including atleast one of the plurality of data streams transmitted by the basestation via a plurality of receiving antennas, the terminal including i)a channel state measuring block for measuring channel state informationof a wireless communication channel established between the base stationand the terminal, ii) a codebook selector to select a size of a codebookbased on the measured channel state information, and iii) a feedbacktransmitter to wirelessly transmit a feedback signal corresponding to anindicator of a codebook corresponding to the selected size of thecodebook; the base station further including a feedback receiver forreceiving the feedback signal transmitted from the terminal, wherein thebase station is configured to select a codebook size based on thefeedback signal received by the feedback receiver; and wherein one ofthe base station or the terminal is further configured to select acodebook size by measuring a ratio of an amount of transmission overheadassociated with a particular codebook size and an achievable maximumthroughput associated with the particular codebook size for a pluralityof different codebook sizes, and to select the codebook size having thelowest ratio.
 5. The MIMO wireless communication system of claim 4,wherein the feedback signal comprises a codebook identifier and whereinthe base station selects a codebook based on the codebook identifier. 6.The MIMO wireless communication system of claim 5, wherein the feedbacksignal further comprises a matrix identifier whereby the base stationselects a precoding matrix based on the matrix identifier.
 7. The MIMOwireless communication system of claim 4, wherein the channel statemeasuring block is configured to measure a signal interference plusnoise ratio (SINR) for the wireless communication channel establishedbetween the base station and the terminal, and wherein the codebookselector is configured to select the size of the codebook based on theSINR.
 8. A method of selecting a codebook for precoding a wirelesstransmission signal, the method comprising: measuring a characteristicof a wireless communication channel; developing codebook size selectioncriteria based on i) an expected throughput for each of a plurality ofdifferent codebook sizes given the measured characteristic of thewireless communication channel, and ii) channel overhead associated witheach of the plurality of different codebook sizes; selecting a code booksize based on the codebook size selection criteria; and transmitting anindicator of a codebook corresponding to the selected size.
 9. Themethod of claim 8, wherein developing the codebook size selectioncriteria comprise calculating, for a plurality of codebook sizes, aratio of communication channel overhead consumed by a codebook of aparticular size versus the channel throughput expected to be obtained byusing a codebook of the particular size given the measuredcharacteristic of the communication channel, and selecting a codebooksize for which the ratio is smallest.
 10. The method of claim 8, furthercomprising: selecting a best matrix from a codebook of the selectedcodebook size based on matrix selection criteria; and transmitting anindicator of a matrix.
 11. The method of claim 10, wherein selecting thebest matrix comprises calculating the maximum sum throughput forprecoding matrices in a codebook of the selected size and selecting amatrix with the highest maximum sum throughput.
 12. The method of claim8, wherein measuring a characteristic of a wireless communicationchannel comprises measuring a signal interference plus noise ratio(SINR), and wherein selecting the codebook size is based on an expectedthroughput for each of the plurality of different codebook sizes giventhe SINR.
 13. A wireless receiver comprising: channel state informationmeasuring circuitry; a codebook selector for selecting a size of acodebook based on i) an expected throughput for each of a plurality ofdifferent codebook sizes given a measured characteristic of the wirelesscommunication channel measured by the channel state informationcircuitry, and ii) channel overhead associated with each of theplurality of different codebook sizes, wherein a codebook correspondingto the selected size includes precoding matrices for precoding signalsto be sent to the receiver and for selecting a precoding matrix from acodebook corresponding to the selected size based on the channel stateinformation measured by the channel state measuring circuitry bydetermining a precoding matrix from the codebook corresponding to theselected sized that produces the highest maximum sum throughput; and afeed back transmitter for transmitting an indicator of a codebookcorresponding to the selected codebook size to a wireless transmitterand for transmitting a matrix identifier corresponding to the selectedprecoding matrix.
 14. The receiver of claim 13, wherein the channelstate information measuring circuitry measures a signal interferenceplus noise ratio for wireless transmissions received by the receiver,and wherein codebook selector is configured to select the size of thecodebook based on an expected throughput for each of a plurality ofdifferent codebook sizes given the signal interference plus noise ratio.15. The wireless transmission system of claim 1, wherein the channelstate information measured by the channel state measuring circuitrycomprises a signal-to-noise ratio (SNR).
 16. The MIMO wirelesscommunication system of claim 4, wherein the channel state measuringblock is configured to measure a signal-to-noise ratio (SNR) for thewireless communication channel established between the base station andthe terminal, and wherein the codebook selector is configured to selectthe size of the codebook based on the SNR.
 17. The method of claim 8,wherein measuring a characteristic of a wireless communication channelcomprises measuring a signal-to-noise ratio (SNR), and wherein selectingthe codebook size is based on an expected throughput for each of theplurality of different codebook sizes given the SNR.
 18. A wirelesstransmission system comprising: a base station configured to transmitwireless signals; a memory associated with the base station, the memoryconfigured to store a variable size codebook including a first pluralityof precoding matrices for precoding the wireless signals; a terminalconfigured to receive wireless signals; channel state measuringcircuitry associated with the terminal, the channel state measuringcircuitry configured to measure transmission conditions of a wirelesscommunication channel between the base station and the terminal; acodebook selector associated with the terminal, the codebook selectorconfigured to select a size of a codebook based on i) an expectedthroughput for each of a plurality of different codebook sizes given thechannel state information measured by the channel state measuringcircuitry and ii) channel overhead associated with each of the pluralityof different codebook sizes, the codebook selector further configured toselect a precoding matrix from a codebook corresponding to the selectedsize of the code book; a feedback transmitter associated with theterminal, the feedback transmitter configured to wirelessly transmit anindicator of the codebook corresponding to the selected size of thecodebook and the selected precoding matrix from the terminal to the basestation; and a feedback receiver associated with the base station, thefeedback receiver configured to receive the indicator of the codebookand the selected precoding matrix from the terminal, wherein the basestation is configured to select a codebook based on the indicator of thecodebook from the terminal, and wherein the base station is configuredto select a precoding matrix from the codebook based on the indicator ofthe selected precoding matrix from the terminal for precoding wirelesssignals to be transmitted from the base station.